/*************************************************************************
	> File Name: oj-396_colormap.cpp
	> Author: Wang Bo
	> Mail: 1276106221@qq.com
	> Created Time: 2020年11月15日 星期日 19时02分41秒
 ************************************************************************/

#include <iostream>
using namespace std;

int n, mmap[35][35];
int dir[4][2] = {0, 1, 1, 0, 0, -1, -1, 0};

void func(int x, int y) {
    for (int i = 0; i < 4; ++i) {
        int xx = x + dir[i][0];
        int yy = y + dir[i][1];
        if (xx < 0 || yy < 0 || xx > n + 1 || yy > n + 1) {
            //判断边界，出界了就continue
            continue;
        }
        if (mmap[xx][yy] == 0) {
            mmap[xx][yy] = 3;
            func(xx, yy);
        }
    }
}

int main() {
    cin >> n;
    for (int i = 1; i <= n; ++i) {
        for (int j = 1; j <= n; ++j) {
            cin >> mmap[i][j];
        }
    }
    //起点标记为3
    mmap[0][0] = 3;
    //首先通过深搜将外圈的连通0标记为3
    func(0, 0);
    //由于题目只要求输出
    //因此直接遍历二维数组输出
    //遇到3，即外圈的连通0，输出0
    //遇到1，输出1
    //遇到0，输出2，表示被1包围的被涂色区域
    for (int i = 1; i <= n; ++i) {
        for (int j = 1; j <= n; ++j) {
            if (j != 1) cout << " ";
            if (mmap[i][j] == 3) cout << 0;
            else if (mmap[i][j] == 0) {
                cout << 2;
            } else {
                cout << 1;
            }
        }
        cout << endl;
    }
    return 0;
}
